home *** CD-ROM | disk | FTP | other *** search
/ Amoszine 6 / Amoszine 6 (Disk 2 of 2).adf / paul_nordovics.lha / P_Nordovics / mapper.AMOS / mapper.amosSourceCode < prev    next >
AMOS Source Code  |  1992-02-26  |  7KB  |  287 lines

  1. ' *************************************************************
  2. '
  3. '                               MAPPER   
  4. '                               ====== 
  5. '
  6. '                   Where All Great Games Are Made!
  7. '
  8. '                         /\/\/\/\/\/\/\/\/\ 
  9. '                         By: Paul Nordovics 
  10. '                         \/\/\/\/\/\/\/\/\/ 
  11. '
  12. '            Gives You Some Idea How A Mapper Is Written 
  13. '
  14. ' Use Keys:
  15. '
  16. '         F1  = Next Level 
  17. '         F2  = Previous Level 
  18. '         F3  = Clear Screen 
  19. '         F4  = Clear Current Map Block Position 
  20. '         F5  = Fill Screen With Current Map Block 
  21. '         F6  = Change Wall Blocks To Current Map Block  
  22. '         F7  = Change Floor Blocks To Current Map Block 
  23. '         F9  = Load Map Data (disabled) 
  24. '         F10 = Save Map Data (disabled) 
  25. '   Cursor Up = Next Map Block   
  26. ' Cursor Down = Previous Map Block   
  27. ' Fire(Joy 1) = Put Block
  28. '
  29. '   It's A Bit Slooooowwww!!! (I compiled "Proper" Version)  
  30. '
  31. ' *************************************************************
  32. '
  33. ' *****************
  34. ' make enough space
  35. ' *****************
  36. Set Buffer 50
  37. '
  38. ' ***********
  39. ' set up vars
  40. ' ***********
  41. Global _CURS_X,_CURS_Y,DELAY,BLOCK_IMAGE
  42. _CURS_X=0 : _CURS_Y=0
  43. DELAY=20
  44. BLOCK_IMAGE=1
  45. Dim MAP(20,260)
  46. Global MAP(),ARRAY_X,ARRAY_Y,LEVEL
  47. ARRAY_X=0 : ARRAY_Y=0
  48. '
  49. ' *************
  50. ' set up screen
  51. ' *************
  52. LEVEL=0
  53. _SHOW_MAP
  54. Locate 0,27 : Print "LEVEL:";LEVEL;
  55. Locate 6,28 : Print "  "
  56. Locate 0,28 : Print "BLOCK:";BLOCK_IMAGE;
  57. Paste Bob 96,210,BLOCK_IMAGE
  58. '
  59. ' -------------------------------------------------------------
  60. '
  61. ' *************************************************************
  62. '                          main loop 
  63. ' *************************************************************
  64. Do 
  65.    MOVE_CURSOR
  66.    _FN_KEYS
  67. Loop 
  68. '
  69. ' -------------------------------------------------------------
  70. '
  71. Procedure MOVE_CURSOR
  72.    If Jup(1)
  73.       Add _CURS_Y,-16 : Add ARRAY_Y,-1
  74.       If _CURS_Y<0
  75.          _CURS_Y=0 : ARRAY_Y=LEVEL*13
  76.       End If 
  77.       Wait DELAY
  78.    End If 
  79.    If Jdown(1)
  80.       Add _CURS_Y,16 : Add ARRAY_Y,1
  81.       If _CURS_Y>192
  82.          _CURS_Y=192 : ARRAY_Y=(LEVEL*13)+12
  83.       End If 
  84.       Wait DELAY
  85.    End If 
  86.    If Jright(1)
  87.       Add _CURS_X,16 : Add ARRAY_X,1
  88.       If _CURS_X>304
  89.          _CURS_X=304 : ARRAY_X=19
  90.       End If 
  91.       Wait DELAY
  92.    End If 
  93.    If Jleft(1)
  94.       Add _CURS_X,-16 : Add ARRAY_X,-1
  95.       If _CURS_X<0
  96.          _CURS_X=0 : ARRAY_X=0
  97.       End If 
  98.       Wait DELAY
  99.    End If 
  100.    Bob 0,_CURS_X,_CURS_Y,Length(1)-1
  101.    If Fire(1)
  102.       Cls 0,_CURS_X,_CURS_Y To _CURS_X+16,_CURS_Y+16
  103.       Paste Bob _CURS_X,_CURS_Y,BLOCK_IMAGE
  104.       MAP(ARRAY_X,ARRAY_Y)=BLOCK_IMAGE
  105.    End If 
  106. End Proc
  107. Procedure _FN_KEYS
  108.    ' ***************
  109.    ' CHANGE BLOCK UP
  110.    ' ***************
  111.    If Key State($4C)
  112.       Inc BLOCK_IMAGE
  113.       If BLOCK_IMAGE>Length(1)-1
  114.          BLOCK_IMAGE=Length(1)-1
  115.       End If 
  116.       Locate 7,28 : Print "  "
  117.       Locate 0,28 : Print "BLOCK:";BLOCK_IMAGE;
  118.       Cls 0,96,210 To 112,226
  119.       Paste Bob 96,210,BLOCK_IMAGE
  120.    End If 
  121.    ' *****************
  122.    ' CHANGE BLOCK DOWN
  123.    ' *****************
  124.    If Key State($4D)
  125.       Dec BLOCK_IMAGE
  126.       If BLOCK_IMAGE<1
  127.          BLOCK_IMAGE=1
  128.       End If 
  129.       Locate 7,28 : Print "  "
  130.       Locate 0,28 : Print "BLOCK:";BLOCK_IMAGE;
  131.       Cls 0,96,210 To 112,226
  132.       Paste Bob 96,210,BLOCK_IMAGE
  133.    End If 
  134.    ' ******** 
  135.    ' LEVEL UP 
  136.    ' ******** 
  137.    If Key State($50)
  138.       Inc LEVEL
  139.       Add ARRAY_Y,13
  140.       If LEVEL>19
  141.          LEVEL=19
  142.          Add ARRAY_Y,-13
  143.       End If 
  144.       _SHOW_MAP
  145.       Locate 0,27 : Print "LEVEL:";LEVEL;
  146.       Locate 7,28 : Print "  "
  147.       Locate 0,28 : Print "BLOCK:";BLOCK_IMAGE;
  148.       Paste Bob 96,210,BLOCK_IMAGE
  149.    End If 
  150.    ' ********** 
  151.    ' LEVEL DOWN 
  152.    ' ********** 
  153.    If Key State($51)
  154.       Dec LEVEL
  155.       Add ARRAY_Y,-13
  156.       If LEVEL<0
  157.          LEVEL=0
  158.          Add ARRAY_Y,13
  159.       End If 
  160.       _SHOW_MAP
  161.       Locate 0,27 : Print "LEVEL:";LEVEL;
  162.       Locate 7,28 : Print "  "
  163.       Locate 0,28 : Print "BLOCK:";BLOCK_IMAGE;
  164.       Paste Bob 96,210,BLOCK_IMAGE
  165.    End If 
  166.    ' ************ 
  167.    ' CLEAR SCREEN 
  168.    ' ************ 
  169.    If Key State($52)
  170.       For D=LEVEL*13 To(LEVEL*13)+12
  171.          For A=0 To 19
  172.             MAP(A,D)=0
  173.          Next A
  174.       Next D
  175.       _SHOW_MAP
  176.    End If 
  177.    ' ***********
  178.    ' CLEAR BLOCK
  179.    ' ***********
  180.    If Key State($53)
  181.       Cls 0,_CURS_X,_CURS_Y To _CURS_X+16,_CURS_Y+16
  182.       MAP(ARRAY_X,ARRAY_Y)=0
  183.    End If 
  184.    ' *****************************
  185.    ' CLEAR SCREEN TO CURRENT BLOCK
  186.    ' *****************************
  187.    If Key State($54)
  188.       For D=LEVEL*13 To(LEVEL*13)+12
  189.          For A=0 To 19
  190.             MAP(A,D)=BLOCK_IMAGE
  191.          Next A
  192.       Next D
  193.       _SHOW_MAP
  194.    End If 
  195.    ' ***********************************
  196.    ' CHANGE WALL BLOCKS TO CURRENT BLOCK
  197.    ' ***********************************
  198.    If Key State($56)
  199.       For D=LEVEL*13 To(LEVEL*13)+12
  200.          For A=0 To 19
  201.             If MAP(A,D)>61
  202.                MAP(A,D)=BLOCK_IMAGE
  203.             End If 
  204.          Next A
  205.       Next D
  206.       _SHOW_MAP
  207.    End If 
  208.    ' ************************************ 
  209.    ' CHANGE FLOOR BLOCKS TO CURRENT BLOCK 
  210.    ' ************************************ 
  211.    If Key State($57)
  212.       For D=LEVEL*13 To(LEVEL*13)+12
  213.          For A=0 To 19
  214.             If MAP(A,D)>18 and MAP(A,D)<62
  215.                MAP(A,D)=BLOCK_IMAGE
  216.             End If 
  217.          Next A
  218.       Next D
  219.       _SHOW_MAP
  220.    End If 
  221.    ' *******************
  222.    ' LOAD DATA FROM DISK
  223.    ' *******************
  224.    If Key State($58)
  225.       '_LOAD_DATA
  226.    End If 
  227.    ' *****************
  228.    ' SAVE DATA TO DISC
  229.    ' *****************
  230.    If Key State($59)
  231.       '_SAVE_DATA
  232.    End If 
  233. End Proc
  234. Procedure _SHOW_MAP
  235.    Screen Close 0
  236.    Screen Open 0,320,256,16,Lowres
  237.    Curs Off : Flash Off : Hide 
  238.    Get Sprite Palette 
  239.    Screen Hide 
  240.    Colour 0,$0
  241.    Cls 0
  242.    Paper 0 : Pen 3
  243.    Y=0
  244.    For D=LEVEL*13 To(LEVEL*13)+12
  245.       X=0
  246.       For A=0 To 19
  247.          If MAP(A,D)>0
  248.             Paste Bob X,Y,MAP(A,D)
  249.          End If 
  250.          Add X,16
  251.       Next A
  252.       Add Y,16
  253.    Next D
  254.    Locate 0,27 : Print "LEVEL:";LEVEL;
  255.    Locate 6,28 : Print "  "
  256.    Locate 0,28 : Print "BLOCK:";BLOCK_IMAGE;
  257.    Paste Bob 96,210,BLOCK_IMAGE
  258.    Double Buffer 
  259.    Screen Show 
  260. End Proc
  261. Procedure _SAVE_DATA
  262.    Open Random 1,"df0:Map_data"
  263.    Field 1,4 As D$
  264.    R=(LEVEL*260)+1
  265.    For D=LEVEL*13 To(LEVEL*13)+12
  266.       For A=0 To 19
  267.          D$=Str$(MAP(A,D))
  268.          Put 1,R
  269.          Inc R
  270.       Next A
  271.    Next D
  272.    Close 1
  273. End Proc
  274. Procedure _LOAD_DATA
  275.    Open Random 1,"df0:Map_data"
  276.    Field 1,4 As D$
  277.    R=(LEVEL*260)+1
  278.    For D=LEVEL*13 To(LEVEL*13)+12
  279.       For A=0 To 19
  280.          Get 1,R
  281.          MAP(A,D)=Val(D$)
  282.          Inc R
  283.       Next A
  284.    Next D
  285.    Close 1
  286.    _SHOW_MAP
  287. End Proc